1. Technical Field
This application relates to dynamic application aware storage configuration.
2. Description of Related Art
Computer systems may include different resources used by one or more host processors. Resources and host processors in a computer system may be interconnected by one or more communication connections. These resources may include, for example, data storage devices such as those included in the data storage systems manufactured by EMC Corporation. These data storage systems may be coupled to one or more servers or host processors and provide storage services to each host processor. Multiple data storage systems from one or more different vendors may be connected and may provide common data storage for one or more host processors in a computer system.
A host processor may perform a variety of data processing tasks and operations using the data storage system. For example, a host processor may perform basic system I/O operations in connection with data requests, such as data read and write operations.
Host processor systems may store and retrieve data using a storage device containing a plurality of host interface units, disk drives (referred to as “disks” or “drives”), and disk interface units. The host systems access the storage device through a plurality of channels provided therewith. Host systems provide data and access control information through the channels to the storage device and the storage device provides data to the host systems also through the channels. The host systems do not address the disk drives of the storage device directly, but rather, access what appears to the host systems as a plurality of logical disk units. The logical disk units may or may not correspond to the actual disk drives. Allowing multiple host systems to access the single storage device unit allows the host systems to share data in the device. In order to facilitate sharing of the data on the device, additional software on the data storage systems may also be used.
Data storage system managers and designers are constantly faced with the problem of how to best design or configure data storage systems to optimize system performance and increase reliability.
For example, if the data storage system is designed or configured with high I/O activity and low storage space requirements in mind, the consequences of running out of data storage space can be significant. Conversely, for example, a system designed or configured to provide a large amount of data storage and a low to moderate amount of I/O activity will suffer performance degradation during periods of peak I/O activity. Although both types of system designs or configurations work well for their original intended purposes, neither provides a data storage system which is capable of changing configuration along with a corresponding change in, for example, I/O activity vs. disk space requirements. Thus, most systems make compromises such as compromising disk storage space for an increased I/O activity level or vice versa. Additionally, if a portion of the system should malfunction, the system may become inoperable, or at best, operate with decreased performance due to the malfunction.
Although some systems can be expanded or reconfigured by adding and/or subtracting from the system hardware, all or a portion of the data storage system may have to be taken off line to effect the changes in configuration. Also, a change in system configuration to generally optimize system performance may not provide for optimum system performance during certain periods of time or for processing certain types of data.
A customer may perform data storage configuration and provisioning tasks. Such tasks may include, for example, configuring and provisioning storage for use with an email application. Tasks may include allocating cache and storage, specifying the logical and/or physical devices used for the storage allocation, specifying whether the data should be replicated, the particular RAID (Redundant Array of Independent or Inexpensive Disks) level, and the like. With such options in connection with performing configuration and provisioning tasks, a customer may not have the appropriate level of sophistication and knowledge needed.
Thus, it may be desirable to utilize a flexible technique which assists customers in connection with performing data storage management tasks such as related to data storage configuration and provisioning. It may be desirable that the technique be adaptable to the particular knowledge level of the user to provide for varying degrees of automation of data storage configuration and provisioning in accordance with best practices that may vary with the underlying data storage system and application.